package cn.good.yan.service.t7;

import java.util.concurrent.atomic.AtomicIntegerArray;
import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.atomic.AtomicReferenceArray;

/**
 * 7. 原子类
 * 数组类型原子类：AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray
 * 原子性 - AtomicIntegerArray 数组 - 原子类
 *
 * @author shengren.yan
 * @create 2024-03-30
 */
public class AtomicDemo2 {
    public static void main(String[] args) {
        // 数组 - 原子类
        // AtomicReferenceArray<MyNumber> list = new AtomicReferenceArray();
        // AtomicIntegerArray atomicIntegerArray = new AtomicIntegerArray(5);
        AtomicIntegerArray atomicIntegerArray = new AtomicIntegerArray(new int[]{1, 2, 3, 4, 5});

        // 循环遍历 - 数据里的值
        for (int i = 0; i < atomicIntegerArray.length(); i++) {
            System.out.println(atomicIntegerArray.get(i));
        }

        System.out.println("-----------------");

        int tmpInt = 0;
        // 更改数组，--- 下标为0的值，改为 20
        tmpInt = atomicIntegerArray.getAndSet(0, 20);
        System.out.println(tmpInt + "\t" + atomicIntegerArray.get(0));

        System.out.println("-----------------");

        // 获取当前值，并自增 , tmpInt 是之前的值， atomicIntegerArray.get(0)是最新的值
        tmpInt = atomicIntegerArray.getAndIncrement(0);
        System.out.println(tmpInt + "\t" + atomicIntegerArray.get(0));
    }
}
